package com.xb.loan.usercenter.account.dao;


import com.xb.loan.usercenter.account.dao.bean.CashInfo;
import com.xb.loan.util.mybatis.MyBatisRepository;

import java.util.List;
import java.util.Map;

@MyBatisRepository
public interface CashInfoDao {
	int insert(CashInfo record);

	int deleteByPrimaryKey(String accountId);
	
	/**
	 * 
	 * 修改用户账户信息，仅允许修改以下信息：
	 * partnerId、feeType、credit_money、t_credit_money、effectiveTime、optTime、status信息。
	 * @param params 待修改的账户信息
	 * @return 修改记录数
	 * 2015年8月30日 by wenju.song
	 */
	int updateByPrimaryKeySelective(Map<String, Object> params);

	/**
	 * 
	 * 账户上金额加上cashInfo增量
	 * @param cashInfo
	 * @return
	 * 2015年8月28日 by wenju.song
	 */
	int addMoney(CashInfo cashInfo);
	
	/**
	 * 账户上金额减去cashInfo增量（只使用Money）
	 * @param cashInfo
	 * @return
	 * 2015年8月28日 by wenju.song
	 */
	int deductMoney(CashInfo cashInfo);
	
	/**
	 * 账户上金额减去cashInfo增量（使用Money字段和信用额度）
	 * @param cashInfo
	 * @return
	 * 2015年9月7日 by wenju.song
	 */
	int deductCredit(CashInfo cashInfo);
	
	/**
	 * 账户上金额减去cashInfo增量（使用Money、信用额度和临时信用额度）
	 * @param cashInfo
	 * @return
	 * 2015年9月7日 by wenju.song
	 */
	int deductTmpCredit(CashInfo cashInfo);
	
	/**
	 * 清空截止到当前时间所有已过期的临时信用额度
	 * @return
	 * 2015年9月6日 by wenju.song
	 */
	int clearExpiredTmpCredit(String currentTime);
	
	/**
	 * 通过用户ID查询现金账户信息
	 * @param userId
	 * @return
	 * 2015年9月11日 by wenju.song
	 */
//	CashInfo queryCashInfoByUserId(String userId);
	
	/**
	 * 通过accountId查询现金账户信息
	 * @param accountId
	 * @return
	 * 2015年9月11日 by wenju.song
	 */
	CashInfo queryCashInfoById(String accountId);
	
	/**
	 * 通过实名编码查询帐户信息
	 * @param realId   实名编码
	 * @return
	 * 2015年11月11日 by wuqinglong
	 */
//	CashInfo queryCashInfoByRealId(String realId);
	/**
	 * 
	 * 根据账户编号数组查询账户列表
	 * @param accountIds
	 * @return
	 * 2016年7月26日 by ziqiang.zhang
	 */
	List<CashInfo> queryCashInfoByIds(String[] accountIds);
}